#ifndef Swing_H
#define Swing_H

#define SW_RST1 6
#define SW_RST2 5
#define SW_RST3 4
#define SW_OFF1 3
#define SW_OFF2 2
#define SW_OFF3 1
#define SW_NORM 0

#define SWCOOL 0
#define SWHEAT 1

#define STEP1 0
#define STEP2 1
#define STEP3 2
#define STEP4 3
#define STEP5 4

#ifdef Swing_Variable
#define Swing_Extern

// 顺时针方向
const U8 tab_Clockwise[] =
    {
        0x09,
        0x01,
        0x03,
        0x02,
        0x06,
        0x04,
        0x0c,
        0x08,
};

// 逆时针方向
const U8 tab_AntiClockwise[] =
    {
        0x08,
        0x0c,
        0x04,
        0x06,
        0x02,
        0x03,
        0x01,
        0x09,
};

static ram_byte VerSwFlag; // 垂直风向调节
#define portVerSw VerSwFlag.byte
#define f_VerSw1 VerSwFlag.bit.b0 // 调节1
#define f_VerSw2 VerSwFlag.bit.b1 // 调节2
#define f_VerSw3 VerSwFlag.bit.b2 // 调节3
#define f_VerSw4 VerSwFlag.bit.b3 // 调节4

static ram_byte HorSwFlag; // 水平方向调节
#define portHorSw HorSwFlag.byte
#define f_HorSw1 HorSwFlag.bit.b0 // 调节1
#define f_HorSw2 HorSwFlag.bit.b1 // 调节2
#define f_HorSw3 HorSwFlag.bit.b2 // 调节3
#define f_HorSw4 HorSwFlag.bit.b3 // 调节4

#else
#define Swing_Extern extern
#endif

typedef struct
{
    U8 SwRst;        // 上电复位角度
    U8 SwACold;      // 防冷风角度
    U8 SwTest[2];    // 性能测试角度
    U8 SwDefault[2]; // 开机默认角度
    U8 SwStep[2][5]; // 五档定格角度
    U8 SwRem[2];     // 关机记忆角度

    U8 SwNow;      // 垂直风向当前角度
    U8 SwCount;    // 垂直方向八拍运行计数
    U8 UpperLimit; // 垂直方向运行上限
    U8 LowerLimit; // 垂直方向运行下限
} ver_Step_typeDef;        // 垂直扫风角度


/*
typedef struct
{
    U8 SwRst;        // 上电复位角度
    U8 SwACold;      // 防冷风角度
    U8 SwTest[2];    // 性能测试角度
    U8 SwDefault[2]; // 开机默认角度
    U8 SwStep[2][5]; // 五档定格角度
    U8 SwRem[2];     // 关机记忆角度

    U8 SwNow;      // 垂直风向当前角度
    U8 SwCount;    // 垂直方向八拍运行计数
    U8 UpperLimit; // 垂直方向运行上限
    U8 LowerLimit; // 垂直方向运行下限
} hor_Step_typeDef;        // 垂直扫风角度

*/

typedef struct
{
    U8 SwRst;     // 上电复位角度
    U8 SwStep[5]; // 五档定格角度

    U8 SwNow;      // 水平方向当前角度
    U8 SwCount;    // 水平方向八拍运行计数
    U8 UpperLimit; // 水平方向运行上限
    U8 LowerLimit; // 水平方向运行下限
} hor_Step_typeDef;        // 水平扫风角度





extern ver_Step_typeDef ver_Step;       
extern hor_Step_typeDef hor_Step;
extern U8 PowerOffResetFlag; // 遥控器关机 进行 摆叶进行复位的标志




Swing_Extern ram_byte SwFlag;
#define f_SwToFanAct SwFlag.bit.b0 // 风机允许开启标志
#define f_SwRemEnd SwFlag.bit.b1   // 风机记忆角度执行标志
#define f_VerSwAdd SwFlag.bit.b2   // 垂直方向角度加大标志
#define f_HorSwAdd SwFlag.bit.b3   // 水平方向角度加大标志

void VerSwAct(void);
void VerSwRst(void);
void VerSwClose(void);
void VerSwJudge(void);

void HorSwAct(void);
void HorSwRst(void);
void HorSwClose(void);
void HorSwJudge(void);

void SwingDriver(void);
void VerSwRun(void);
void HorSwRun(void);
#endif
